package koby99;

public class J28_Printerlnterface {

	// 인터페이스를 사용하지 않는 경우
	// 프린터 제조사를 예를 듦
	
	public static void main(String[] args) {
		HPPrinter h = new HPPrinter();
		h.speedPrint();
		CanonPrint c = new CanonPrint();
		c.hperPrint();
		EpsonPrint e = new EpsonPrint();
		e.nanoPrint();
		
		HPPrinterDrivier h2 = new HPPrinterDrivier();
		h2.Print();
		CanonPrinterDrivier c2 = new CanonPrinterDrivier();
		c2.Print();
		EpsonPrintDrivier e2 = new EpsonPrintDrivier();
		e2.Print();
		
		// 인터페이스를 이용한 다형성 ☆!!!*
		Printable p = new HPPrinterDrivier();
		p.Print();
		p = new CanonPrinterDrivier();
		p.Print();
		p = new EpsonPrintDrivier();
		p.Print();
		//인터페이스를 이용한 다양성 (=상속의 다양성. 상속도 가능하다는 솔 )
	}

}
class HPPrinter{
	public void speedPrint(){
		System.out.println("빠른 출력속도요!-HP");
	}
}

class CanonPrint{
	public void hperPrint(){
		System.out.println("절대속도에 도전 - Canon");
	}
}

class EpsonPrint{
	public void nanoPrint(){
		System.out.println("눈깜박할 속도 - Epson");
	}
}

interface Printable{
	public final String a = "1"; 
	// 요넘을 하려면 반드시 상수로, 초기화까지 시켜놔야 된다[final+값까지 넣어줘야함]
	// 또 되는건 satic, public, final 같은것 밖에안됨
	public void Print();
}

class HPPrinterDrivier implements Printable{
	@Override
	public void Print() {
		System.out.println("빠른 출력속도요! - HP");
	}	
}

class CanonPrinterDrivier implements Printable{
	@Override
	public void Print() {
		System.out.println("절대속도에 도전 - Canon");
	}
}

class EpsonPrintDrivier implements Printable{
	@Override
	public void Print() {
		System.out.println("눈깜박할 속도 - Epson");
	}
}